这是一个欧皇与非酋的故事……
引言
很久很久以前,有一位欧皇叫做黄霖,他热衷于各种随机算法,而且每次都能AC,直到有一天,他看到了张老师(ZS,我的启蒙老师,他水平很高,造数据能力特强)出的一份卷子:
黄霖:嗯!T1模拟退火能AC!T2模拟退火也能AC!T3模拟退火照样AC!
张老师(冷笑):嗯哼?三题都写模拟退火?有分吗?
然后就没有然后了呢poi…
传送门
题解
这是一道物理题。
首先根据最小势能原理,当整个系统的势能最小时,系统平衡。不要问我为什么QwQ,我物理不好呢poi
虽然这题的正解不是模拟退火,但是用这题来当模拟退火的经典题还是很不错的呢poi。
首先我们钦定一个点作为绳结所在的位置作为初始答案,然后计算势能。
每次都在当前答案点附近的一个区域内rand一个点,区域大小由当前温度决定,如果这个点更优(势能更小),那么久接收这个点作为答案。否则有一定的概率接收新答案(概率计算方法很玄学,但是温度越小接收的概率越大)。
然后将温度乘以一个降温系数(降温系数是一个小于1的正数,这一步即退火),然后进行下一次答案搜索。
当温度降到几乎为0时停止就行了呢poi。
退火技巧
首先可以多退几次。
降温系数要根据题目细调,太大了会导致时效差,太小可能搜不到最优解QwQ。
初始温度也要根据情况给定,可以用一些历史上特殊的日子,比如某dalao的生日来做初始温度呢poi。
种子也建议用某dalao的生日,或脸滚键盘,最好不要用初始值。
没事时多放放大悲咒,往生咒,般若波罗蜜多心经之类的音乐,你将得到佛祖的保佑。
代码
1 |
|